home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / tool / checker / checker.bas next >
BASIC Source File  |  1995-08-19  |  16KB  |  456 lines

  1. 1000 '==========================================================='
  2. 1010 '   FileSelecter   -12DotFontVersion-        by  K.T '
  3. 1020 '==========================================================='
  4. 1030 CLEAR ,,512,500000,,1500000
  5. 1040 DEFINT A-Z : DEF FONT "システム   12ドット"
  6. 1050 SCREEN@0:SCREEN 1,0,3,0:SCREEN@0:COLOR 2,0:CLS:PALETTE
  7. 1060 WINDOW(0,0)-(1023,511) : VIEW(0,0)-(1023,511)
  8. 1070 DIM OBJ1(5),OBJ2(5),OBJ3(5),OBJ4(5)
  9. 1080 DIM EGB(7775*2),FS&(1),TN$(3),OBJ(7775*2),MEM(75)
  10. 1090 DIM DAT$(9999),BUF(0),TXT$(9999)
  11. 1100 MOUSE 0 : MOUSE 4,0,0,1023,511:'OUT &H440,27:OUT&H442,&H11
  12. 1110 ON ERROR GOTO *ERROR
  13. 1120 '
  14. 1130 FX=0:FY=0:MAX=640:MAY=480:SC_SW=15:光=7:面=14:影=SC_SW-光
  15. 1140 TX=140:TY=10:TBAN=0
  16. 1150  FOR I=0 TO 5:READ DAT$:OBJ1(I)=VAL("&H"+DAT$)-&H8000:NEXT
  17. 1160  FOR I=0 TO 5:READ DAT$:OBJ2(I)=VAL("&H"+DAT$)-&H8000:NEXT
  18. 1170  FOR I=0 TO 5:READ DAT$:OBJ3(I)=VAL("&H"+DAT$)-&H8000:NEXT
  19. 1180  FOR I=0 TO 5:READ DAT$:OBJ4(I)=VAL("&H"+DAT$)-&H8000:NEXT
  20. 1190  FOR I=0 TO 3:READ DAT$:TN$(I)=DAT$:NEXT
  21. 1200 GOSUB *SET_PAL
  22. 1210 DRIVE=INP(&H3B30)
  23. 1220 '
  24. 1230 WHILE -1
  25. 1240  GET@A(FX,FY)-(FX+142,FY+215),OBJ
  26. 1250    FILE_NAME$="" : GOSUB *FILESEL
  27. 1260  PUT@A(FX,FY)-(FX+142,FY+215),OBJ
  28. 1270  IF FILE_NAME$="" AND TFLG=0 THEN END
  29. 1280  IF MID$(FILE_NAME$,10,3)="TIF" THEN GOSUB *TIF_LOAD
  30. 1290  IF MID$(FILE_NAME$,10,3)="JPG" THEN GOSUB *JPG_LOAD
  31. 1300  IF MID$(FILE_NAME$,10,3)="EUP" THEN GOSUB *EUP_LOAD
  32. 1310  IF MID$(FILE_NAME$,10,3)="FMB" THEN GOSUB *MUS_LOAD
  33. 1320  IF MID$(FILE_NAME$,10,3)="PMB" THEN GOSUB *MUS_LOAD
  34. 1330  IF MID$(FILE_NAME$,10,3)="SND" THEN GOSUB *SND_LOAD
  35. 1340  IF MID$(FILE_NAME$,10,3)="MVE" THEN GOSUB *MVE_LOAD
  36. 1350  IF MID$(FILE_NAME$,10,3)="MMM" AND TFLG=0 THEN GOSUB *MMM_LOAD
  37. 1360 IF TFLG=1 THEN GOTO 1450
  38. 1370  IF MID$(FILE_NAME$,10,3)="TXT" THEN GOSUB *TXT_LOAD
  39. 1380  IF MID$(FILE_NAME$,10,3)="GGG" THEN GOSUB *TXT_LOAD
  40. 1390  IF MID$(FILE_NAME$,10,3)="DOC" THEN GOSUB *TXT_LOAD
  41. 1400  IF MID$(FILE_NAME$,10,3)="MML" THEN GOSUB *TXT_LOAD
  42. 1410  IF MID$(FILE_NAME$,10,3)="MAN" THEN GOSUB *TXT_LOAD
  43. 1420  IF MID$(FILE_NAME$,10,3)="BAT" THEN GOSUB *TXT_LOAD
  44. 1430  IF MID$(FILE_NAME$,10,3)="CFG" THEN GOSUB *TXT_LOAD
  45. 1440  '
  46. 1450  影=SC_SW-光
  47. 1460  IF TFLG=1 THEN RETURN 
  48. 1470 WEND
  49. 1480 '
  50. 1490 *TIF_LOAD
  51. 1500  IF SC_SW=255 THEN SCREEN@0
  52. 1510  SCREEN 1,1,3,0:SW=0
  53. 1520    LOAD@FILE_NAME$,MEM
  54. 1530    IF MEM(75)=15 THEN
  55. 1540       SCREEN@0:SC_SW=15:SW=1
  56. 1550       WINDOW(0,0)-(1023,511):VIEW(0,0)-(1023,511)
  57. 1560    ENDIF
  58. 1570    IF MEM(75)=255 AND TFLG=0 THEN
  59. 1580       SCREEN 0:SC_SW=255:SW=1:SCREEN@2
  60. 1590       WINDOW(0,0)-(1023,511):VIEW(0,0)-(1023,511)
  61. 1600    ENDIF
  62. 1610    IF MEM(75)=32767 THEN
  63. 1620       SCREEN@1:SC_SW=15:SW=1
  64. 1630       WINDOW(0,0)-(511,255):VIEW(0,0)-(511,255)
  65. 1640    ENDIF
  66. 1650    IF SW<>0 THEN LOAD@FILE_NAME$
  67. 1660  IF SC_SW<>255 THEN SCREEN 1,0,3,0
  68. 1670 RETURN 
  69. 1680 ' 
  70. 1690 *JPG_LOAD 
  71. 1700  IF SC_SW=255 THEN SCREEN@0
  72. 1710  SCREEN 1,1,3,0:SCREEN@1
  73. 1720  WINDOW(0,0)-(511,255):VIEW(0,0)-(511,255)
  74. 1730  LOAD@FILE_NAME$
  75. 1740  SCREEN 1,0,3,0:SCREEN@0:SC_SW=15
  76. 1750 RETURN 
  77. 1760 ' 
  78. 1770 *EUP_LOAD
  79. 1780  FILES FILE_NAME$,N,DAT$
  80. 1790  SIZ&=VAL(MID$(DAT$(1),13,14))
  81. 1800  ERASE BUF:DIM BUF(SIZ&\2)
  82. 1810  LOAD@FILE_NAME$,BUF
  83. 1820  PLAY OFF:PLAY@BUF
  84. 1830 RETURN 
  85. 1840 ' 
  86. 1850 *MUS_LOAD 
  87. 1860  LOAD@FILE_NAME$
  88. 1870 RETURN 
  89. 1880 ' 
  90. 1890 *SND_LOAD 
  91. 1900  FILES FILE_NAME$,N,DAT$
  92. 1910  SIZ&=VAL(MID$(DAT$(1),13,14))
  93. 1920  ERASE BUF:DIM BUF(SIZ&\2) 
  94. 1930  LOAD@FILE_NAME$,BUF
  95. 1940  PCMPLAY BUF,127 
  96. 1950 RETURN 
  97. 1960 ' 
  98. 1970 *MVE_LOAD 
  99. 1980  IF SC_SW=255 THEN SCREEN@0
  100. 1990  SCREEN 1,1,3,0:SCREEN@1
  101. 2000  WINDOW(0,0)-(511,255):VIEW(0,0)-(511,255)
  102. 2010    PLAY OFF
  103. 2020    MOVIE OPEN FILE_NAME$
  104. 2030    'DEF MOVIE 2,0
  105. 2040    MOVIE PLAY 
  106. 2050    MOVIE CLOSE 
  107. 2060  SCREEN 1,0,3,0:SCREEN@0:SC_SW=15
  108. 2070 RETURN 
  109. 2080 ' 
  110. 2090 *MMM_LOAD 
  111. 2100  SCREEN 0:SC_SW=255:SCREEN@2
  112. 2110  WINDOW(0,0)-(1023,511):VIEW(0,0)-(1023,511)
  113. 2120 PLAY OFF
  114. 2130  MOVIE OPEN FILE_NAME$
  115. 2140  MOVIE PLAY
  116. 2150  MOVIE CLOSE 
  117. 2160 RETURN 
  118. 2170 ' 
  119. 2180 *TXT_LOAD 
  120. 2190  IF SC_SW=255 THEN SCREEN@0
  121. 2200  SCREEN 1,0,3,0:SCREEN@0:SC_SW=15:影=SC_SW-光
  122. 2210  OPEN "I",#1,FILE_NAME$
  123. 2220    FOR I=0 TO 9999:MAX_I=I
  124. 2230      INPUT #1,TXT$(I)
  125. 2240    NEXT
  126. 2250  CLOSE #1
  127. 2260  GOSUB *TXT_MAKE
  128. 2270  MOUSE 1,,,1:K$=""
  129. 2280  WHILE K$<>CHR$(&H1B)
  130. 2290    K$=INKEY$
  131. 2300    X=MOUSE(0):Y=MOUSE(1)
  132. 2310    XX=X:YY=Y:SX=1:SY=1:GOSUB *SCREEN_MOVE
  133. 2320    IF MOUSE(2,1)<0 THEN TFLG=1:GOSUB 1240
  134. 2330    IF K$=CHR$(&H1E) THEN TBAN=TBAN-35:GOSUB *TXT_MOVE
  135. 2340    IF K$=CHR$(&H1F) THEN TBAN=TBAN+35:GOSUB *TXT_MOVE
  136. 2350  WEND
  137. 2360  CLS:TFLG=0:MOUSE 1,,,0 
  138. 2370 RETURN 
  139. 2380 ' 
  140. 2390 *TXT_MOVE
  141. 2400  IF TBAN<0 THEN BEEP:TBAN=TBAN+35:RETURN
  142. 2410  IF TBAN>=MAX_I THEN BEEP:TBAN=TBAN-35:RETURN
  143. 2420  LINE(TX+1     ,TY+16)-(TX+6*80+1 ,TY+12*35+17),PSET,%光,BF
  144. 2430  IF TBAN+34>MAX_I THEN K=MAX_I MOD 35 ELSE K=34
  145. 2440  FOR I=0 TO K
  146. 2450    SYMBOL(TX+2,I*12+TY+17),TXT$(TBAN+I),3/4,3/4,%影
  147. 2460  NEXT 
  148. 2470  GOSUB *TXT_BAR
  149. 2480 RETURN 
  150. 2490 ' 
  151. 2500 *FILESEL
  152. 2510  GOSUB *FILESEL_W
  153. 2520  END_FLG=0:MOUSE 1,,,1
  154. 2530  WHILE END_FLG=0
  155. 2540    PUSH=0
  156. 2550    WHILE PUSH=0
  157. 2560      PUSH=MOUSE(2,0)
  158. 2570      IF MOUSE(2,1)<0 THEN GOSUB *SET_PAL
  159. 2580      X=MOUSE(0):Y=MOUSE(1)
  160. 2590      XX=X:YY=Y:SX=1:SY=1:GOSUB *SCREEN_MOVE
  161. 2600    WEND
  162. 2610    X=X-FX : Y=Y-FY
  163. 2620    IF X>  3 AND Y> 16 AND X< 13 AND Y< 36 THEN GOSUB *LEFT_DR  '
  164. 2630    IF X> 13 AND Y> 17 AND X< 32 AND Y< 35 THEN GOSUB *SET_DR    '
  165. 2640    IF X> 32 AND Y> 16 AND X< 42 AND Y< 36 THEN GOSUB *RIGHT_DR '
  166. 2650    IF X>  2 AND Y> 36 AND X<121 AND Y<197 THEN GOSUB *GET_FILE '
  167. 2660    IF X>125 AND Y> 36 AND X<141 AND Y< 46 THEN GOSUB *UP_VER   '
  168. 2670    IF X>127 AND Y> 49 AND X<139 AND Y<183 THEN GOSUB *VER_MOVE '
  169. 2680    IF X>125 AND Y>186 AND X<141 AND Y<197 THEN GOSUB *DOWN_VER '
  170. 2690    IF X> 79 AND Y>199 AND X<110 AND Y<214 THEN GOSUB *FILE_RUN '
  171. 2700    IF X>110 AND Y>199 AND X<141 AND Y<214 THEN GOSUB *FILE_CAN
  172. 2710    IF X>= 0 AND Y>= 0 AND X<143 AND Y< 15 THEN GOSUB *F_MOVE
  173. 2720    *END
  174. 2730  WEND
  175. 2740  MOUSE 1,,,0
  176. 2750 RETURN
  177. 2760 '
  178. 2770 *F_MOVE
  179. 2780  LINE(FX,FY+14)-(FX+142,FY+14),PSET,%面,B
  180. 2790    MOUSE 4,X,Y,1023-142+X,511-215+Y
  181. 2800    GET@A(FX,FY)-(FX+142,FY+215),EGB
  182. 2810    LINE(FX-1,FY-1)-STEP(144,217),XOR,,B
  183. 2820    XZ=FX:YZ=FY
  184. 2830    WHILE PUSH=-1
  185. 2840      HX=XZ : HY=YZ
  186. 2850      WHILE XZ=HX AND YZ=HY AND PUSH=-1
  187. 2860        XZ=MOUSE(0)-X
  188. 2870        YZ=MOUSE(1)-Y
  189. 2880        PUSH=MOUSE(2,0)
  190. 2890      WEND
  191. 2900      LINE(HX-1,HY-1)-STEP(144,217),XOR,,B
  192. 2910      LINE(XZ-1,YZ-1)-STEP(144,217),XOR,,B
  193. 2920      XX=XZ:YY=YZ:SX=143:SY=216:GOSUB *SCREEN_MOVE
  194. 2930    WEND
  195. 2940    LINE(XZ-1,YZ-1)-STEP(144,217),XOR,,B
  196. 2950    PUT@A(FX,FY)-(FX+142,FY+215),OBJ
  197. 2960    FX=XZ : FY=YZ
  198. 2970    GET@A(FX,FY)-(FX+142,FY+215),OBJ
  199. 2980    PUT@A(FX,FY)-(FX+142,FY+215),EGB
  200. 2990    MOUSE 4,0,0,1023,511
  201. 3000  LINE(FX,FY+14)-(FX+142,FY+14),PSET,%影,B
  202. 3010 RETURN
  203. 3020 '
  204. 3030 *LEFT_DR
  205. 3040  LINE(FX+4,FY+17)-STEP(8,18),XOR,,B
  206. 3050  WHILE MOUSE(2,0):WEND
  207. 3060  LINE(FX+4,FY+17)-STEP(8,18),XOR,,B
  208. 3070  SW=-1 : DRIVE=DRIVE+SW
  209. 3080  IF DRIVE=64 THEN DRIVE=81
  210. 3090  R_SW=0:GOSUB *DRIVE_W
  211. 3100 RETURN *END
  212. 3110 '
  213. 3120 *SET_DR
  214. 3130  LINE(FX+14,FY+18)-STEP(17,16),XOR,,B
  215. 3140  WHILE MOUSE(2,0):WEND
  216. 3150  LINE(FX+14,FY+18)-STEP(17,16),XOR,,B
  217. 3160  FBAN=0:R_SW=1:GOSUB *FILE_W
  218. 3170 RETURN *END
  219. 3180 '
  220. 3190 *RIGHT_DR
  221. 3200  LINE(FX+33,FY+17)-STEP(8,18),XOR,,B
  222. 3210  WHILE MOUSE(2,0):WEND
  223. 3220  LINE(FX+33,FY+17)-STEP(8,18),XOR,,B
  224. 3230  SW=1 : DRIVE=DRIVE+SW
  225. 3240  IF DRIVE=82 THEN DRIVE=65
  226. 3250  R_SW=0:GOSUB *DRIVE_W
  227. 3260 RETURN *END
  228. 3270 '
  229. 3280 *GET_FILE
  230. 3290  IF FS&(1)=0 OR R_SW=0 THEN RETURN *END
  231. 3300  BAN=(Y-37)\16
  232. 3310  IF FS&(1)<BAN+1 THEN RETURN *END
  233. 3320  LINE(FX+3,FY+37+BAN*16)-STEP(120,15),XOR,,B
  234. 3330  WHILE MOUSE(2,0):WEND
  235. 3340  LINE(FX+3,FY+37+BAN*16)-STEP(120,15),XOR,,B
  236. 3350  IF MID$(DAT$(BAN+FBAN),13,3)="DIR" THEN *DIR_CHANGE ELSE *FILE_SET
  237. 3360 RETURN *END
  238. 3370 '
  239. 3380 *DIR_CHANGE
  240. 3390  DR$=MID$(DAT$(BAN+FBAN),1,8)
  241. 3400  FOR I=8 TO 2 STEP -1
  242. 3410    IF MID$(DR$,I,1)=" " THEN DR$=MID$(DR$,1,I-1) ELSE I=2
  243. 3420  NEXT
  244. 3430  SHELL "CD "+DR$
  245. 3440  FBAN=0:GOSUB *FILE_W
  246. 3450 RETURN *END
  247. 3460 '
  248. 3470 *FILE_SET
  249. 3480  IF FILE_NAME$=MID$(DAT$(BAN+FBAN),1,12) THEN END_FLG=1
  250. 3490  FILE_NAME$=MID$(DAT$(BAN+FBAN),1,12)
  251. 3500  LINE(FX+4,FY+199)-STEP(72,13),PSET,%面,BF
  252. 3510  SYMBOL(FX+5,FY+200),FILE_NAME$,3/4,3/4,%光
  253. 3520 RETURN *END
  254. 3530 '
  255. 3540 *UP_VER
  256. 3550  IF FBAN=0 OR R_SW=0 THEN RETURN *END
  257. 3560  LINE(FX+126,FY+37)-STEP(14,9),XOR,,B
  258. 3570    GET@A(FX+2,FY+37)-(FX+121,FY+180),EGB
  259. 3580    PUT@A(FX+2,FY+53)-(FX+121,FY+196),EGB
  260. 3590    LINE(FX+4,FY+38)-STEP(118,13),PSET,%面,BF
  261. 3600    SYMBOL(FX+11,FY+39),DAT$(FBAN-1),3/4,3/4,%影
  262. 3610    SYMBOL(FX+10,FY+39),DAT$(FBAN-1),3/4,3/4,%光
  263. 3620    FBAN=FBAN-1 : GOSUB *VER_W
  264. 3630  LINE(FX+126,FY+37)-STEP(14,9),XOR,,B
  265. 3640 RETURN *END
  266. 3650 '
  267. 3660 *DOWN_VER
  268. 3670  IF FBAN+11>FS&(1) OR R_SW=0 THEN RETURN *END
  269. 3680  LINE(FX+126,FY+187)-STEP(14,9),XOR,,B
  270. 3690    GET@A(FX+2,FY+53)-(FX+121,FY+196),EGB
  271. 3700    PUT@A(FX+2,FY+37)-(FX+121,FY+180),EGB
  272. 3710    LINE(FX+4,FY+182)-STEP(118,13),PSET,%面,BF
  273. 3720    SYMBOL(FX+11,FY+183),DAT$(FBAN+10),3/4,3/4,%影
  274. 3730    SYMBOL(FX+10,FY+183),DAT$(FBAN+10),3/4,3/4,%光
  275. 3740    FBAN=FBAN+1 : GOSUB *VER_W
  276. 3750  LINE(FX+126,FY+187)-STEP(14,9),XOR,,B
  277. 3760 RETURN *END
  278. 3770 ' 
  279. 3780 *VER_MOVE 
  280. 3790  IF RBAN+11>FS&(1) OR R_SW=0 THEN RETURN *END
  281. 3800  Y=Y-50 : FBAN=Y*(FS&(1)-9)\133
  282. 3810  GOSUB *FILE_PUT
  283. 3820  GOSUB *VER_W 
  284. 3830 RETURN *END
  285. 3840 ' 
  286. 3850 *FILE_RUN
  287. 3860  IF R_SW=0 THEN RETURN *END
  288. 3870  LINE(FX+80,FY+200)-STEP(29,13),XOR,,B
  289. 3880  END_FLG=1 : WHILE MOUSE(2,0):WEND
  290. 3890  LINE(FX+80,FY+200)-STEP(29,13),XOR,,B
  291. 3900 RETURN *END
  292. 3910 ' 
  293. 3920 *FILE_CAN
  294. 3930  IF R_SW=0 THEN RETURN *END
  295. 3940  LINE(FX+111,FY+200)-STEP(29,13),XOR,,B
  296. 3950  FILE_NAME$="":END_FLG=1:WHILE MOUSE(2,0):WEND
  297. 3960  LINE(FX+111,FY+200)-STEP(29,13),XOR,,B
  298. 3970 RETURN *END
  299. 3980 ' 
  300. 3990 *LINE_BOX
  301. 4000  LINE(FX+XX  ,FY+YY  )-STEP(SX  ,SY  ),PSET,%光,B
  302. 4010  LINE(FX+XX+1,FY+YY+1)-STEP(SX-1,SY-1),PSET,%影,B
  303. 4020  LINE(FX+XX+1,FY+YY+1)-STEP(SX-2,SY-2),PSET,%面,BF
  304. 4030 RETURN
  305. 4040 '
  306. 4050 *DRIVE_W
  307. 4060  FILE_NAME$=""
  308. 4070  LINE(FX+4,FY+199)-STEP(72,13),PSET,%面,BF '選択ファイルの消去
  309. 4080  SHELL CHR$(DRIVE)+":"
  310. 4090  LINE(FX+15,FY+20)-STEP(15,13),PSET,%面,BF '選択ドライブの消去
  311. 4100  SYMBOL(FX+18,FY+21),AKCNV$(CHR$(DRIVE)),3/4,3/4,%光 'ドライブの表示
  312. 4110  FR$=STR$(DSKF(DRIVE-65))
  313. 4120  LINE(FX+77,FY+20)-STEP(48,12),PSET,%面,BF '残り容量
  314. 4130  SYMBOL(FX+70,FY+21),SPACE$(9-LEN(FR$))+FR$,3/4,3/4,%光
  315. 4140  FOR I=0 TO 9
  316. 4150    LINE(FX+4,FY+38+I*16)-STEP(113,13),PSET,%面,BF
  317. 4160  NEXT
  318. 4170  IF R_SW=1 THEN GOSUB *FILE_W
  319. 4180 RETURN
  320. 4190 '
  321. 4200 *FILE_W 
  322. 4210  IF FR$="Error" THEN GOTO 4260
  323. 4220  FILES CHR$(DRIVE)+":",C,FS&
  324. 4230  'ERASE DAT$ : DIM DAT$(FS&(1))
  325. 4240  FILES CHR$(DRIVE)+":",N,DAT$
  326. 4250  GOSUB *DATA_CNV
  327. 4260  GOSUB *FILE_PUT
  328. 4270  GOSUB *VER_W
  329. 4280 RETURN
  330. 4290 '
  331. 4300 *FILE_PUT
  332. 4310  FOR I=0 TO 9
  333. 4320    LINE(FX+4,FY+38+I*16)-STEP(113,13),PSET,%面,BF
  334. 4330    IF I+FBAN<FS&(1) THEN
  335. 4340      SYMBOL(FX+11,FY+39+I*16),DAT$(I+FBAN),3/4,3/4,%影
  336. 4350      SYMBOL(FX+10,FY+39+I*16),DAT$(I+FBAN),3/4,3/4,%光
  337. 4360    ENDIF
  338. 4370  NEXT
  339. 4380  IF FS&(1)=0 THEN SYMBOL(FX+10,FY+39),"< File Not Found >",3/4,3/4,%光
  340. 4390 RETURN
  341. 4400 '
  342. 4410 *VER_W
  343. 4420  IF FS&(1)<10 THEN FLG=10 ELSE FLG=FS&(1)
  344. 4430  Y1=133*FBAN/FLG : Y2=133*(FBAN+10)/FLG
  345. 4440  LINE(FX+127,FY+49)-STEP(12,135),PSET,%面,BF
  346. 4450  XX=128:YY=50+Y1:SX=10:SY=Y2-Y1:GOSUB *LINE_BOX
  347. 4460 RETURN
  348. 4470 '
  349. 4480 *DATA_CNV
  350. 4490  FOR I=1 TO FS&(1)
  351. 4500    IF MID$(DAT$(I),20,3)="DIR" THEN GOSUB *D_CNV ELSE GOSUB *F_CNV
  352. 4510  NEXT
  353. 4520 RETURN
  354. 4530 '
  355. 4540 *D_CNV
  356. 4550  DAT$(I-1)=MID$(DAT$(I),1,8)+" << DIR >>"
  357. 4560 RETURN
  358. 4570 '
  359. 4580 *F_CNV
  360. 4590  CNT=0
  361. 4600  DAT$(I-1)=MID$(DAT$(I),1,8)+"."+MID$(DAT$(I),10,3)
  362. 4610  SIZ&=VAL(MID$(DAT$(I),13,14))
  363. 4620  FOR J=3 TO 1 STEP -1
  364. 4630    IF 1024^J<SIZ& THEN SIZ&=SIZ&\1024:CNT=CNT+1
  365. 4640  NEXT
  366. 4650  IF SIZ&>999 THEN CNT=CNT+1:SIZ&=1
  367. 4660  DAT$(I-1)=DAT$(I-1)+SPACE$(4-LEN(STR$(SIZ&)))+STR$(SIZ&)+TN$(CNT)
  368. 4670 RETURN
  369. 4680 '
  370. 4690 *SCREEN_MOVE
  371. 4700  OUT &H440,17
  372. 4710   IF XX+SX>MAX THEN OUT &H442,(XX+SX-640)\8
  373. 4720   IF XX<MIX    THEN OUT &H442,XX\8
  374. 4730   IF YY+SY>MAY THEN OUT &H443,(YY+SY-480)\2
  375. 4740   IF YY<MIY    THEN OUT &H443,YY\2
  376. 4750  OUT &H440,21
  377. 4760   IF XX+SX>MAX THEN OUT &H442,(XX+SX-640)\8:MAX=XX+SX :MIX=XX+SX-640
  378. 4770   IF XX<MIX    THEN OUT &H442,XX\8         :MIX=XX    :MAX=MIX+640
  379. 4780   IF YY+SY>MAY THEN OUT &H443,(YY+SY-480)\2:MAY=YY+SY :MIY=YY+SY-480
  380. 4790   IF YY<MIY    THEN OUT &H443,YY\2         :MIY=YY    :MAY=MIY+480
  381. 4800 RETURN
  382. 4810 '
  383. 4820 *SET_PAL
  384. 4830  PALETTE 光,[16*14,16*14,16*14]
  385. 4840  PALETTE 影,[16* 3,16* 3,16* 3]
  386. 4850  PALETTE 面,[16* 8,16* 7,16*12]
  387. 4860 RETURN
  388. 4870 '
  389. 4880 *FILESEL_W
  390. 4890  RESTORE *座標デ-タ
  391. 4900  FOR I=1 TO 12
  392. 4910    READ XX,YY,SX,SY : GOSUB *LINE_BOX
  393. 4920  NEXT
  394. 4930  LINE(FX+76,FY+19)-STEP(50,14),XOR,,B
  395. 4940  FOR I=0 TO 16*10-1 STEP 16
  396. 4950    XX= 3 : YY=37+I: SX=120 : SY= 15 : GOSUB *LINE_BOX 'ファイル名
  397. 4960  NEXT
  398. 4970  LINE(FX+126,FY+48)-STEP(14,137),XOR,,B
  399. 4980  LINE(FX+3,FY+198)-STEP(75,15),XOR,,B
  400. 4990  SYMBOL(FX+ 2,FY+ 1),"FileSelecter  by K.T",3/4,3/4,%光,,,1
  401. 5000  SYMBOL(FX+45,FY+21)," Free         KB",3/4,3/4,%光',,,1
  402. 5010  PUT@(FX+  5,FY+ 21)-(FX+ 10,FY+ 31),OBJ1
  403. 5020  PUT@(FX+ 35,FY+ 21)-(FX+ 40,FY+ 31),OBJ2
  404. 5030  PUT@(FX+128,FY+ 39)-(FX+138,FY+ 44),OBJ3
  405. 5040  PUT@(FX+128,FY+189)-(FX+138,FY+194),OBJ4
  406. 5050  SYMBOL(FX+85,FY+201),"RUN",3/4,3/4,%光,,,1
  407. 5060  SYMBOL(FX+116,FY+201),"CAN",3/4,3/4,%光,,,1
  408. 5070  R_SW=1:GOSUB *DRIVE_W
  409. 5080 RETURN
  410. 5090 '
  411. 5100 *TXT_MAKE
  412. 5110  LINE(TX,       TY   )-(TX+6*80+15,TY+12*35+18),PSET,%影,BF
  413. 5120  LINE(TX+1     ,TY+1 )-(TX+75     ,TY+14),PSET,%影,BF
  414. 5130  LINE(TX+76    ,TY+1 )-(TX+6*80+14,TY+14),PSET,%面,BF
  415. 5140  LINE(TX+1     ,TY+16)-(TX+6*80+1 ,TY+12*35+17),PSET,%光,BF
  416. 5150  SYMBOL(TX+2,TY+2),FILE_NAME$,3/4,3/4,%光
  417. 5160  '
  418. 5170  K=35:GOSUB *TXT_BAR
  419. 5180  IF MAX_I>35 THEN K=35 ELSE K=MAX_I
  420. 5190  FOR I=0 TO K-1
  421. 5200    SYMBOL(TX+2,I*12+TY+17),TXT$(I),3/4,3/4,%影
  422. 5210  NEXT
  423. 5220 RETURN
  424. 5230 '
  425. 5240 *TXT_BAR
  426. 5250  IF MAX_I<35 THEN I=35 ELSE I=MAX_I
  427. 5260  Y1=12*35*TBAN/I : Y2=12*35*(TBAN+K)/I
  428. 5270  LINE(TX+6*80+3,TY+16)-(TX+6*80+14,TY+12*35+17),PSET,%影,BF
  429. 5280 '
  430. 5290  LINE(TX+6*80+4,TY+17+Y1)-(TX+6*80+14,TY+Y2+17),PSET,%面,BF
  431. 5300  LINE(TX+6*80+4,TY+17+Y1)-(TX+6*80+14,TY+Y2+17),PSET,%影,B
  432. 5310  LINE(TX+6*80+3,TY+16+Y1)-(TX+6*80+13,TY+Y2+16),PSET,%光,BF
  433. 5320 RETURN
  434. 5330 '
  435. 5340 *ERROR
  436. 5350  IF ERL=1650 OR ERL=1730 THEN RESUME NEXT 'フルカラ-は非対応
  437. 5360  IF ERL=2010 THEN RESUME 2060 'DLL領域が足りない
  438. 5370  IF ERL=2130 THEN RESUME 2160 'DLL領域が足りない
  439. 5380  IF ERL=2230 THEN MAX_I=I:I=9999:RESUME NEXT
  440. 5390  IF ERL=1800 THEN RESUME 1830 'メモリ不足
  441. 5400  IF ERL=1810 THEN RESUME NEXT '音源ファイルが見つからなかった
  442. 5410  IF ERL=4080 AND ERR=60 THEN DRIVE=DRIVE+SW:RESUME *DRIVE_W 
  443. 5420  IF ERL=4110 AND ERR=72 THEN BEEP:FS&(1)=0:FR$="Error":RESUME NEXT
  444. 5430  IF ERL=4240 THEN RESUME 4260
  445. 5440  SCREEN 0:COLOR 2:PRINT "エラーが発生しちゃった",ERR;"番";ERL;"行"
  446. 5450 '
  447. 5460 DATA 8C04,BC1C,7C7C,BC7C,8C1C,8004,4080,70E0,7CF8,70F8,40E0,8080
  448. 5470 DATA 8004,800E,801F,  3F,407F,60FF,60FF,407F,  3F,801F,800E,8004
  449. 5480 DATA " B","KB","MB","GB"
  450. 5490 '
  451. 5500 *座標デ-タ
  452. 5510  DATA   0,  0,142, 14,  0, 15,142,200,  4, 17,  8, 18, 14, 18, 17, 16
  453. 5520  DATA  33, 17,  8, 18, 76, 19, 50, 14,126, 37, 14,  9,126, 48, 14,137
  454. 5530  DATA 126,187, 14,  9,  3,198, 75, 15, 80,200, 29, 13,111,200, 29, 13
  455. 5540 '
  456.